package com.coolbi.security.mapper;

import java.util.List;
import java.util.Map;

/**
 * 基础Mapper
 * 
 * @author MingliC
 *
 * @param <T> 操作的对象
 */
public interface BaseMapper<T> {
	/**
	 * 保存对象
	 * @param obj 要保存的对象
	 * @return
	 */
	int save(T obj);
	/**
	 * 更新对象
	 * @param obj 要保存的对象
	 * @return
	 */
	int update(T obj);
	/**
	 * 删除对象
	 * @param id 对象的ID
	 * @return
	 */
	int delete(long id);
	/**
	 * 根据ID得到对象
	 * @param id 对象的ID
	 * @return
	 */
	T get(long id);
	/**
	 * 获得所有数据
	 * @return
	 */
	List<T> list();
	/**
	 * 根据参数查询
	 * @param parameter 参数
	 * @return
	 */
	List<T> listByPage(Map<String, Object> parameter);
	/**
	 * 根据参数查询
	 * @param parameter 参数
	 * @return
	 */
	List<T> listByParameterPage(Map<String, Object> parameter);
	/**
	 * 获得总记录数 ，没有参数
	 * @return
	 */
	int count();
	/**
	 * 根据参数查询
	 * @param parameter 参数
	 * @return
	 */
	List<T> listByParameter(Map<String, Object> parameter);
	/**
	 * 根据参数获得总记录数
	 * @param parameter 参数
	 * @return
	 */
	int countByParameter(Map<String, Object> parameter);
	/**
	 * 关键字搜索
	 * @param keyword
	 * @return
	 */
	List<T> search(Map<String, Object> parameter);
	/**
	 * 获得关键字搜索的总记录数
	 * @param keyword
	 * @return
	 */
	int countByKeyword(Map<String, Object> parameter);
}
